package by.demchenko.sample.datamodel;

import javax.persistence.MappedSuperclass;
import java.io.Serializable;

@MappedSuperclass
public abstract class AbstractEntity implements Serializable {
    public abstract Integer getId();

    @Override
    public int hashCode() {
        if (getId() != null) {
            return getId().hashCode();
        } else {
            return super.hashCode();
        }
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) {
            return true;
        }

        if ((o == null) || !(o instanceof AbstractEntity)) {
            return false;
        }
        if (getClass() != o.getClass()) {
            return false;
        }

        final AbstractEntity other = (AbstractEntity) o;

        return getId() != null && getId().equals(other.getId());

    }

    protected String transliterate(String s) {
        String s1 = "а  б  в  г  д  е  ё  ж  з  и  й  к  л  м  н  о  п  р  с  т  у  ф  х  ц  ч  ш  щ  ъ  ы  ь  э  ю  я  ";
        String s2 = "a  b  v  g  d  e  e  j  z  i  y  k  l  m  n  o  p  r  s  t  u  f  h  c  ch sh sch'  y  '  e  u  ya ";
        String outString = "";
        for (int i = 0; i < s.length() - 1; i++) {
            String sLower = s.toLowerCase();
            char ch = sLower.charAt(i);
            if (ch == ' ') {
                outString += " ";
            } else {
                int beginIndex = s1.indexOf(ch);
                if (ch == s.charAt(i)) {
                    outString += s2.substring(beginIndex, beginIndex + 3).trim();
                } else {
                    outString += (s2.substring(beginIndex, beginIndex + 1).toUpperCase() + s2.substring(beginIndex + 1, beginIndex + 3)).trim();
                }
            }
        }
        return outString;
    }
}
